package org.csu.onlineedubackend.service;

import org.csu.onlineedubackend.dto.StudentCourseDTO;
import org.csu.onlineedubackend.dto.StudentProgressDTO;
import org.csu.onlineedubackend.entity.StudentCourse;

import java.util.List;
import java.util.Map;

public interface StudentCourseService {
    boolean subscribe(Integer studentId, Integer courseId, String level, boolean isFree);
    boolean isSubscribed(Integer studentId, Integer courseId);
    List<StudentProgressDTO> getStudentsWithProgress(Integer courseId, Integer teacherId);

    /**
     * 取消订阅课程
     * @param studentId 学生ID
     * @param courseId 课程ID
     * @return 是否取消成功
     */
    boolean unsubscribe(Integer studentId, Integer courseId);
    
    /**
     * 获取学生课程列表
     * @param studentId 学生ID
     * @return 学生课程DTO列表
     */
    List<StudentCourseDTO> getStudentCourses(Integer studentId);
    
    /**
     * 更新课程学习进度
     * @param studentId 学生ID
     * @param courseId 课程ID
     * @param progress 进度（0-1之间的浮点数）
     * @return 是否更新成功
     */
    boolean updateCourseProgress(Integer studentId, Integer courseId, Float progress);

    /**
     * 获取每月活跃学生数（月活）
     * @return 每月活跃学生数列表
     */
    List<Map<String, Object>> getMonthlyActiveStudents();

    /**
     * 获取每日活跃学生数（月活）
     * @return 每日活跃学生数列表，包含月份和人数
     */
    List<Map<String, Object>> getDailyActiveStudents();

    /**
     * 獲取學生未完成的作業列表
     * @param userId 學生ID
     * @return 未完成的作業列表
     */
    List<Map<String, Object>> getPendingAssignments(Long userId);
}
